/*
 *    Copyright (c) 2018-2025, cloud All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the pig4cloud.com developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: cloud
 */

package com.fuyao.cloud.common.data.datascope;

import java.util.List;

/**
 * @author cloud
 * @date 2019-09-07
 * <p>
 * data scope 判断处理器,抽象服务扩展
 */
public interface DataScopeHandle {

	/**
	 * 计算用户数据权限
	 * @param deptList 部门ID，如果为空表示没有任何数据权限。
	 * @return 返回true表示无需进行数据过滤处理，返回false表示需要进行数据过滤
	 */
	Boolean calcScope(List<Long> deptList);

	/**
	 * 计算 当前用户数据权限
	 * @return 返回false表示需要进行数据过滤
	 */
	Boolean calcAuthorScope();

	/**
	 * 自定义权限过滤
	 * @return 返回false表示需要进行数据过滤
	 */
	Boolean calcCustomizeItemScope();

	/**
	 * 获取自定义权限 本级或本级及下级
	 * @param deptList 部门ids
	 * @param dsType 权限类型
	 * @return true false
	 */
	Boolean splicingCustomizeDeptList(List<Long> deptList,Integer dsType);

	/**
	 * 获取用户其它角色的数据权限编码
	 * @return 角色的数据权限
	 */
	String getCustomizeItemScopeOther();

	/**
	 * 根据数据类型加载deptList集合
	 * @param deptList deptList集合
	 * @param dsType 数据类型
	 * @return deptList id 集合
	 */
	Boolean splicingCustomizeOtherDeptList(List<Long> deptList,Integer dsType);

}
